Compilar DOS

From CGSecurity

Jump to: navigation, search

Paquetes para DJGPP

Estoy utilizando el siguiente paquete DJGPP

  • GNU Binutils 2.11.2 binarios para DJGPP
  • bsh204d GNU Bash 2.04 binarios para DJGPP
  • bsn129b GNU bison 1.34 para DJGPP V2
  • csdpmi5b CWSDPMI distribución binaria (release 5)
  • dif272b GNU Diffutils 2.7.2 para DJGPP V2
  • djdev203 Kit de Desarrollo y Runtime
  • faq230b DJGPP Lista de FAQ edición 2.30 para DJGPP v2.03
  • fil40b GNU Fileutils 4.0 para DJGPP 2.x, release 3 (binarios)
  • File(1) 3.34: binarios
  • find41b GNU findutils 4.1 para DJGPP V2
  • flx254b GNU Flex 2.5.4 binarios para DJGPP V2
  • gcc304b.zip : GCC 3.0.4 C binarios del compilador para DJGPP
  • gdb500b GDB GNU Debugger versión 5.0 binarios para DJGPP v2
  • gpp302b.zip : GCC 3.0.2 C++ binarios del compilador para DJGPP
  • grep24b GNU grep 2.4 binarios para DJGPP V2
  • gwk306b GNU Awk 3.0.6 para DJGPP v2
  • libt143d.zip libtool
  • m4-14b GNU M4 1.4 binarios para DJGPP v2
  • mak3791b GNU Make 3.79.1 binarios para DJGPP V2
  • mlp107b Executable File Packer para DJGPP V2
  • objc302b.zip : GCC 3.0.2 Objective C binarios del compilador para DJGPP
  • pdcur24b.zip PDCurses 2.4 binario para DJGPP
  • perl561b Perl 5.6.1b para DJGPP V2 (binario)
  • sed3028b GNU sed 3.02.80 para DJGPP V2
  • shl112b GNU sh-utils 1.12 para DJGPP V2
  • tar112ab GNU tar 1.12a binarios para DJGPP V2
  • txi40b GNU Texinfo 4.0 binarios para DJGPP V2
  • txt20b GNU Textutils 2.0 binarios para DJGPP V2
  • Which versión 2.11 modificado para trabajar con DJGPP por David Cullen

Puede obtener este compilador de C en http://www.delorie.com/djgpp.

Ej. si ya tiene instalado DJGPP en D:\gnu, agregue en su autoexec.bat,

set DJGPP=D:\gnu\djgpp.env
set PATH=D:\GNU\BIN;%PATH%

Patching DJGPP

En include/signal.h, agregar

#ifndef SIGCONT
#define SIGCONT 18
#endif

En include/mntent.h, agregar

#ifndef MOUNTED
#define MOUNTED "/etc/mtab"
#endif
#ifndef MNTOPT_RO
#define MNTOPT_RO "ro"
#endif

En include/errno.h, agregar

#ifndef EMSGSIZE
#define EMSGSIZE        90
#endif
#ifndef EOPNOTSUPP
#define EOPNOTSUPP      95
#endif
#ifndef ENOTSUPP
#define ENOTSUPP        524
#endif
#ifndef ENOTSUP
#define ENOTSUP         524
#endif
#ifndef ECANCELED
#define ECANCELED       125
#endif
#ifndef EILSEQ
#define EILSEQ          84
#endif
#ifndef EOVERFLOW
#define EOVERFLOW       600
#endif

En include/fcntl.h, agregar

#define O_LARGEFILE     0100000

En sys/param.h, agregar

/* Some autoconf'd packages check for endianness.  When cross-building we
   can't run programs on the target.  Fortunately, autoconf supports the
   definition of byte order in sys/param.h (that's us!).
   The values here are the same as used in gdb/defs.h (are the more
   appropriate values?).  */
#define BIG_ENDIAN      4321
#define LITTLE_ENDIAN   1234
/* All known dos systems are little endian.  */
#define BYTE_ORDER      LITTLE_ENDIAN

Agregar el archivo include/stdint.h

typedef unsigned char uint8_t;
typedef unsigned short int uint16_t;
typedef unsigned int uint32_t;
typedef unsigned long long int uint64_t;
typedef char int8_t;
typedef short int int16_t;
typedef int int32_t;
typedef long long int int64_t;

ln -s gpp.exe g++.exe

TestDisk es un programa verdaderamente 32 Bit (compilado bajo DJGPP), así que un programa servidor DPMI (cwsdpmi.exe) está includeído en la descarga el cual le permite a TestDisk ser ejecutado en un DOS de 16 Bits. Si desea trabajar bajo DOS (16-bit) real, va a necesitar tener un servidor de DPMI ejecutándose; para hacer esto, obtenga: csdpmi*b.zip y simplemente ponga el ejecutable (cwsdpmi.exe) en su directorio bin (el cual debe estar en el PATH).

Volver a Compilación de TestDisk

Data Recovery